#setwd('/afs/inf.ed.ac.uk/user/s17/s1725186/Documents/PhD-Models/FirstPUModel/RMarkdowns')
library(tidyverse) ; library(reshape2) ; library(glue) ; library(plotly) ; library(dendextend)
library(RColorBrewer) ; library(viridis) ; require(gridExtra) ; library(GGally) ; library(ggpubr)
library(expss)
library(polycor)
library(foreach) ; library(doParallel)
library(knitr) ; library(kableExtra)
library(biomaRt)
library(clusterProfiler) ; library(ReactomePA) ; library(DOSE) ; library(org.Hs.eg.db)
library(WGCNA)
SFARI_colour_hue = function(r) {
pal = c('#FF7631','#FFB100','#E8E328','#8CC83F','#62CCA6','#59B9C9','#b3b3b3','#808080','gray','#d9d9d9')[r]
}
Load preprocessed dataset (preprocessing code in 01_data_preprocessing.Rmd) and clustering (pipeline in 05_WGCNA.Rmd)
# Gandal dataset
load('./../Data/preprocessed_data.RData')
datExpr = datExpr %>% data.frame
rownames(datExpr) = datGenes$ensembl_gene_id
datMeta = datMeta %>% mutate(ID = paste0('X',description))
# GO Neuronal annotations: regex 'neuron' in GO functional annotations and label the genes that make a match as neuronal
GO_annotations = read.csv('./../Data/genes_GO_annotations.csv')
GO_neuronal = GO_annotations %>% filter(grepl('neuron', go_term)) %>%
mutate('ID'=as.character(ensembl_gene_id)) %>%
dplyr::select(-ensembl_gene_id) %>% distinct(ID) %>%
mutate('Neuronal'=1)
# SFARI Genes
SFARI_genes = read_csv('./../../../SFARI/Data/SFARI_genes_01-03-2020_w_ensembl_IDs.csv')
SFARI_genes = SFARI_genes[!duplicated(SFARI_genes$ID) & !is.na(SFARI_genes$ID),]
# Clusterings
clusterings = read_csv('./../Data/clusters.csv')
# Update DE_info with SFARI and Neuronal information
genes_info = DE_info %>% mutate('ID'=datGenes$ensembl_gene_id, padj = adj.P.Val, log2FoldChange = logFC) %>%
left_join(SFARI_genes, by='ID') %>%
mutate(`gene-score`=ifelse(is.na(`gene-score`), 'Others', `gene-score`)) %>%
left_join(GO_neuronal, by='ID') %>% left_join(clusterings, by='ID') %>%
mutate(Neuronal=ifelse(is.na(Neuronal), 0, Neuronal)) %>%
mutate(gene.score=ifelse(`gene-score`=='Others' & Neuronal==1, 'Neuronal', `gene-score`),
significant=padj<0.05 & !is.na(padj))
# Add gene symbol
getinfo = c('ensembl_gene_id','external_gene_id')
mart = useMart(biomart='ENSEMBL_MART_ENSEMBL', dataset='hsapiens_gene_ensembl',
host='feb2014.archive.ensembl.org') ## Gencode v19
gene_names = getBM(attributes=getinfo, filters=c('ensembl_gene_id'), values=genes_info$ID, mart=mart)
genes_info = genes_info %>% left_join(gene_names, by=c('ID'='ensembl_gene_id'))
clustering_selected = 'DynamicHybrid'
genes_info$Module = genes_info[,clustering_selected]
dataset = read.csv(paste0('./../Data/dataset_', clustering_selected, '.csv'))
dataset$Module = dataset[,clustering_selected]
load('./../Data/GSEA.RData')
GSEA_SFARI = enrichment_SFARI
load('./../Data/ORA.RData')
ORA_SFARI = enrichment_SFARI
rm(DE_info, GO_annotations, clusterings, getinfo, mart, efit, enrichment_DGN, enrichment_DO, enrichment_GO,
enrichment_KEGG, enrichment_Reactome, enrichment_SFARI)
We have results both from GSEA and ORA to measure the enrichment of SFARI Genes in each module, and they both agree with each other relatively well
SFARI_genes_by_module = c()
for(module in names(GSEA_SFARI)){
GSEA_info = GSEA_SFARI[[module]] %>% dplyr::select(ID, pvalue, p.adjust, NES) %>%
mutate(pvalue = ifelse(NES>0, pvalue, 1-pvalue),
p.adjust = ifelse(NES>0, p.adjust, 1)) %>%
dplyr::rename('GSEA_pval' = pvalue, 'GSEA_padj'= p.adjust)
ORA_info = ORA_SFARI[[module]] %>% dplyr::select(ID, pvalue, p.adjust, qvalue, GeneRatio, Count) %>%
dplyr::rename('ORA_pval' = pvalue, 'ORA_padj' = p.adjust)
module_info = GSEA_info %>% full_join(ORA_info, by = 'ID') %>% add_column(.before = 'ID', Module = module)
SFARI_genes_by_module = rbind(SFARI_genes_by_module, module_info)
}
SFARI_genes_by_module = SFARI_genes_by_module %>%
left_join(dataset %>% dplyr::select(Module, MTcor) %>%
group_by(Module,MTcor) %>% tally %>% ungroup, by = 'Module') %>%
mutate(ORA_pval = ifelse(is.na(ORA_pval), 1, ORA_pval),
ORA_padj = ifelse(is.na(ORA_padj), 1, ORA_padj))
plot_data = SFARI_genes_by_module %>% filter(ID=='SFARI')
ggplotly(plot_data %>% ggplot(aes(1-GSEA_pval, 1-ORA_pval, size = n)) +
geom_point(color = plot_data$Module, alpha = .6, aes(id=Module)) +
geom_smooth(se=FALSE, color = '#CCCCCC') +
xlab('GSEA Enrichment') + ylab('ORA Enrichment') + coord_fixed() +
ggtitle(paste0('Corr = ', round(cor(plot_data$GSEA_pval, plot_data$ORA_pval),2))) +
theme_minimal() + theme(legend.position = 'none'))
To determine which modules have a statistically significant enrichment in SFARI Genes we can use the adjusted p-values. We used the Bonferroni correction for this.
GSEA identifies 24/95 as significant. This doesn’t make sense
ggplotly(plot_data %>% ggplot(aes(GSEA_padj, ORA_padj, size = n)) +
geom_point(color = plot_data$Module, alpha = .7, aes(id=Module)) +
geom_smooth(se=FALSE, color = '#CCCCCC') +
geom_hline(yintercept = 0.01, color = 'gray', linetype = 'dashed') +
geom_vline(xintercept = 0.01, color = 'gray', linetype = 'dashed') +
xlab('GSEA adjusted p-value') + ylab('ORA adjusted p-value') +
scale_x_log10(limits = c(min(plot_data$GSEA_padj, plot_data$ORA_padj),1.2)) +
scale_y_log10(limits = c(min(plot_data$GSEA_padj, plot_data$ORA_padj),1.2)) +
ggtitle(paste0('Corr = ',round(cor(plot_data$GSEA_padj, plot_data$ORA_padj),2))) + coord_fixed() +
theme_minimal() + theme(legend.position = 'none'))
plot_data = plot_data %>% mutate(GSEA_sig = GSEA_padj<0.01, ORA_sig = ORA_padj<0.01) %>%
apply_labels(GSEA_sig = 'GSEA significant enrichment',
ORA_sig = 'ORA significant enrichment')
cro(plot_data$GSEA_sig, list(plot_data$ORA_sig, total()))
|  ORA significant enrichment |  #Total | |||
|---|---|---|---|---|
| Â FALSEÂ | Â TRUEÂ | Â | ||
|  GSEA significant enrichment | ||||
| Â Â Â FALSEÂ | 70 | 1 | Â | 71 |
| Â Â Â TRUEÂ | 23 | 1 | Â | 24 |
|    #Total cases | 93 | 2 |  | 95 |
The ‘over-enrichment’ in SFARI Modules in GSEA could be because SFARI Genes have in general higher Module Memberships than the other genes, which would make them cluster at the beginning of the list constantly and would bias the enrichment analysis.
Looking at the plot below, we can see that there is not a uniform distribution of SFARI genes across all quantiles of the Module Membership values, but they instead seem to cluster around Module Membership values with high magnitudes (both positive and negative), so I don’t think the GSEA results for the SFARI genes are valid.
Because of this, I’m going to use the enrichment from the ORA to study the SFARI Genes
quant_data = dataset %>% dplyr::select(ID, contains('MM.')) %>%
left_join(genes_info %>% dplyr::select(ID, gene.score), by = 'ID') %>% dplyr::select(-ID) %>%
melt %>% mutate(quant = cut(value, breaks = quantile(value, probs = seq(0,1,0.05)) %>%
as.vector, labels = FALSE)) %>%
group_by(gene.score, quant) %>% tally %>% ungroup %>% ungroup
quant_data = quant_data %>% group_by(quant) %>% summarise(N = sum(n)) %>% ungroup %>%
left_join(quant_data, by = 'quant') %>% dplyr::select(quant, gene.score, n, N) %>%
mutate(p = round(100*n/N,2)) %>% filter(!is.na(quant)) %>%
mutate(gene.score = factor(gene.score, levels = rev(c('1','2','3','Neuronal','Others'))))
ggplotly(quant_data %>% filter(!gene.score %in% c('Neuronal','Others')) %>%
ggplot(aes(quant, p, fill = gene.score)) + geom_bar(stat='identity') +
xlab('Module Membership Quantiles') + ylab('% of SFARI Genes in Quantile') +
ggtitle('Percentage of Genes labelled as SFARI in each Quantile') +
scale_fill_manual(values = SFARI_colour_hue(r=rev(c(1:3)))) +
theme_minimal() + theme(legend.position = 'none'))
rm(quant_data)
Selecting modules with an adjusted p-value below 0.01 using the ORA
ggplotly(plot_data %>% ggplot(aes(MTcor, ORA_padj, size=n)) +
geom_point(color=plot_data$Module, alpha=0.5, aes(id=Module)) +
geom_hline(yintercept = 0.01, color = 'gray', linetype = 'dotted') +
xlab('Module-Diagnosis Correlation') + ylab('Corrected p-values') + scale_y_log10() +
ggtitle('Modules Significantly Enriched in SFARI Genes') +
theme_minimal() + theme(legend.position = 'none'))
top_modules = plot_data %>% arrange(desc(ORA_padj)) %>% filter(ORA_padj<0.01) %>% pull(Module) %>% as.character
plot_data %>% filter(Module %in% top_modules) %>% arrange(ORA_pval) %>%
dplyr::select(Module, MTcor, ORA_pval, ORA_padj, qvalue, GeneRatio, Count) %>%
rename( ORA_pval = 'p-value', ORA_padj = 'Adjusted p-value') %>%
kable %>% kable_styling(full_width = F)
| Module | MTcor | p-value | Adjusted p-value | qvalue | GeneRatio | Count |
|---|---|---|---|---|---|---|
| #A789FF | 0.6112554 | 0.0000307 | 0.0001537 | 0.0000324 | 40/407 | 40 |
| #FF64B1 | 0.5043320 | 0.0013666 | 0.0068330 | 0.0028771 | 21/205 | 21 |
pca = datExpr %>% prcomp
plot_data = data.frame('ID'=rownames(datExpr), 'PC1' = pca$x[,1], 'PC2' = pca$x[,2]) %>%
left_join(dataset, by='ID') %>%
left_join(genes_info %>% dplyr::select(ID, external_gene_id), by='ID') %>%
dplyr::select(ID, external_gene_id, PC1, PC2, Module, gene.score) %>%
mutate(ImportantModules = ifelse(Module %in% top_modules, as.character(Module), 'Others')) %>%
mutate(color = ifelse(ImportantModules=='Others','gray',ImportantModules),
alpha = ifelse(ImportantModules=='Others', 0.1, 0.6),
gene_id = paste0(ID, ' (', external_gene_id, ')')) %>%
apply_labels(ImportantModules = 'Top Modules')
plot_data %>% ggplot(aes(PC1, PC2, color=ImportantModules)) +
geom_point(alpha=plot_data$alpha, color=plot_data$color, aes(ID=gene_id)) + theme_minimal() +
xlab(paste0('PC1 (',round(100*summary(pca)$importance[2,1],2),'%)')) +
ylab(paste0('PC2 (',round(100*summary(pca)$importance[2,2],2),'%)')) +
ggtitle('Genes belonging to the Modules with the highest SFARI Genes Enrichment')
rm(pca)
Following the WGCNA pipeline, selecting the genes with the highest Module Membership and Gene Significance
Ordered by \(\frac{MM+|GS|}{2}\)
There aren’t that many SFARI genes in the top genes of the modules
create_table = function(module){
top_genes = dataset %>% left_join(genes_info %>% dplyr::select(ID, external_gene_id), by='ID') %>%
dplyr::select(ID, external_gene_id, paste0('MM.',gsub('#','',module)), GS, gene.score) %>%
filter(dataset$Module==module) %>% dplyr::rename('MM' = paste0('MM.',gsub('#','',module))) %>%
mutate(Relevance = (MM+abs(GS))/2) %>% arrange(by=-Relevance) %>% top_n(20) %>%
dplyr::rename('Gene Symbol' = external_gene_id, 'SFARI Score' = gene.score)
return(top_genes)
}
top_genes = list()
for(i in 1:length(top_modules)) top_genes[[i]] = create_table(top_modules[i])
kable(top_genes[[1]] %>% dplyr::select(-ID), caption=paste0('Top 20 genes for Module ', top_modules[1],
' (MTcor = ', round(dataset$MTcor[dataset$Module == top_modules[1]][1],2),')')) %>%
kable_styling(full_width = F)
| Gene Symbol | MM | GS | SFARI Score | Relevance |
|---|---|---|---|---|
| TBC1D23 | 0.7884941 | 0.6872194 | Others | 0.7378567 |
| CBX5 | 0.8148188 | 0.6007890 | Others | 0.7078039 |
| VPS41 | 0.7832445 | 0.5614859 | Others | 0.6723652 |
| FBXW7 | 0.8611394 | 0.4512806 | Others | 0.6562100 |
| CREBBP | 0.7233588 | 0.5841394 | 1 | 0.6537491 |
| PPP2R5C | 0.7357587 | 0.5163063 | Others | 0.6260325 |
| ZRANB2 | 0.8757220 | 0.3735327 | Others | 0.6246274 |
| FAM13C | 0.7390301 | 0.5089977 | Others | 0.6240139 |
| TPM3 | 0.7293832 | 0.5179388 | Others | 0.6236610 |
| RORA | 0.6819642 | 0.5602203 | Others | 0.6210923 |
| STAU1 | 0.6783867 | 0.5620162 | Others | 0.6202015 |
| MEF2A | 0.6802534 | 0.5299537 | Others | 0.6051035 |
| RRBP1 | 0.6733003 | 0.5316807 | Others | 0.6024905 |
| NFAT5 | 0.7199273 | 0.4840942 | Others | 0.6020108 |
| TAF13 | 0.7462561 | 0.4537740 | Others | 0.6000150 |
| TCEA1 | 0.6666325 | 0.5320542 | Others | 0.5993434 |
| LEO1 | 0.7175695 | 0.4609003 | 2 | 0.5892349 |
| GABRA3 | 0.6939019 | 0.4632479 | Others | 0.5785749 |
| ARAP2 | 0.6369266 | 0.5001257 | Others | 0.5685262 |
| OSBPL8 | 0.7292083 | 0.3926742 | Others | 0.5609413 |
kable(top_genes[[2]] %>% dplyr::select(-ID), caption=paste0('Top 20 genes for Module ', top_modules[2],
' (MTcor = ', round(dataset$MTcor[dataset$Module == top_modules[2]][1],2),')')) %>%
kable_styling(full_width = F)
| Gene Symbol | MM | GS | SFARI Score | Relevance |
|---|---|---|---|---|
| CPNE3 | 0.7163190 | 0.7410235 | Others | 0.7286712 |
| JADE3 | 0.6615278 | 0.7190986 | Others | 0.6903132 |
| LRRN1 | 0.7265126 | 0.6513188 | Others | 0.6889157 |
| TMSB15A | 0.6928634 | 0.6842224 | Others | 0.6885429 |
| NLGN4X | 0.8348708 | 0.5354803 | 2 | 0.6851755 |
| DCAF12 | 0.7808185 | 0.5685263 | Others | 0.6746724 |
| FAM172A | 0.6926313 | 0.6366515 | Others | 0.6646414 |
| BCHE | 0.7214337 | 0.6063030 | Others | 0.6638684 |
| CNR1 | 0.7731004 | 0.5261326 | 2 | 0.6496165 |
| PHF21A | 0.6551561 | 0.6348232 | 1 | 0.6449896 |
| SMAD3 | 0.6573250 | 0.6094305 | Others | 0.6333778 |
| ZMIZ1 | 0.6273598 | 0.6240369 | Others | 0.6256983 |
| NFIB | 0.7610366 | 0.4874557 | 3 | 0.6242462 |
| PDGFRA | 0.7463291 | 0.4996192 | Others | 0.6229741 |
| NUDCD1 | 0.7392538 | 0.4902374 | Others | 0.6147456 |
| SLC16A2 | 0.6005639 | 0.6210378 | Others | 0.6108008 |
| E2F5 | 0.6781056 | 0.5405444 | Others | 0.6093250 |
| WSCD1 | 0.7097529 | 0.5024290 | Others | 0.6060910 |
| RRP15 | 0.5194008 | 0.6792841 | Others | 0.5993424 |
| MN1 | 0.7073455 | 0.4857411 | Others | 0.5965433 |
rm(create_table, i)
pca = datExpr %>% prcomp
ids = c()
for(tg in top_genes) ids = c(ids, tg$ID)
plot_data = data.frame('ID'=rownames(datExpr), 'PC1' = pca$x[,1], 'PC2' = pca$x[,2]) %>%
left_join(dataset, by='ID') %>% dplyr::select(ID, PC1, PC2, Module, gene.score) %>%
mutate(color = ifelse(Module %in% top_modules, as.character(Module), 'gray')) %>%
mutate(alpha = ifelse(color %in% top_modules & ID %in% ids, 1, 0.1))
plot_data %>% ggplot(aes(PC1, PC2)) + geom_point(alpha=plot_data$alpha, color=plot_data$color) +
xlab(paste0('PC1 (',round(100*summary(pca)$importance[2,1],2),'%)')) +
ylab(paste0('PC2 (',round(100*summary(pca)$importance[2,2],2),'%)')) +
theme_minimal() + ggtitle('Most relevant genes for top Modules')
rm(ids, pca, tg, plot_data)
Using the package clusterProfiler. Performing Gene Set Enrichment Analysis (GSEA) and Over Representation Analysis (ORA) using the following datasets:
Gene Ontology
Disease Ontology
Disease Gene Network
KEGG
REACTOME
# GSEA
load('./../Data/GSEA.RData')
# Rename lists
GSEA_GO = enrichment_GO
GSEA_DGN = enrichment_DGN
GSEA_DO = enrichment_DO
GSEA_KEGG = enrichment_KEGG
GSEA_Reactome = enrichment_Reactome
GSEA_SFARI = enrichment_SFARI
# ORA
load('./../Data/ORA.RData')
# Rename lists
ORA_GO = enrichment_GO
ORA_DGN = enrichment_DGN
ORA_DO = enrichment_DO
ORA_KEGG = enrichment_KEGG
ORA_Reactome = enrichment_Reactome
ORA_SFARI = enrichment_SFARI
rm(enrichment_GO, enrichment_DO, enrichment_DGN, enrichment_KEGG, enrichment_Reactome)
compare_methods = function(GSEA_list, ORA_list){
for(top_module in top_modules){
cat(paste0(' \n \nEnrichments for Module ', top_module, ' (MTcor=',
round(dataset$MTcor[dataset$Module==top_module][1],2), '): \n \n'))
GSEA = GSEA_list[[top_module]]
ORA = ORA_list[[top_module]]
cat(paste0('GSEA has ', nrow(GSEA), ' enriched terms \n'))
cat(paste0('ORA has ', nrow(ORA), ' enriched terms \n'))
cat(paste0(sum(ORA$ID %in% GSEA$ID), ' terms are enriched in both methods \n \n'))
plot_data = GSEA %>% mutate(pval_GSEA = p.adjust) %>% dplyr::select(ID, Description, NES, pval_GSEA) %>%
inner_join(ORA %>% mutate(pval_ORA = p.adjust) %>%
dplyr::select(ID, pval_ORA, GeneRatio, qvalue), by = 'ID')
if(nrow(plot_data)>0){
print(plot_data %>% mutate(pval_mean = pval_ORA + pval_GSEA) %>%
arrange(pval_mean) %>% dplyr::select(-pval_mean) %>%
kable %>% kable_styling(full_width = F))
}
}
}
plot_results = function(GSEA_list, ORA_list){
l = htmltools::tagList()
for(i in 1:length(top_modules)){
GSEA = GSEA_list[[top_modules[i]]]
ORA = ORA_list[[top_modules[i]]]
plot_data = GSEA %>% mutate(pval_GSEA = p.adjust) %>% dplyr::select(ID, Description, NES, pval_GSEA) %>%
inner_join(ORA %>% mutate(pval_ORA = p.adjust) %>% dplyr::select(ID, pval_ORA), by = 'ID')
if(nrow(plot_data)>5){
min_val = min(min(plot_data$pval_GSEA), min(plot_data$pval_ORA))
max_val = max(max(max(plot_data$pval_GSEA), max(plot_data$pval_ORA)),0.05)
ggp = ggplotly(plot_data %>% ggplot(aes(pval_GSEA, pval_ORA, color = NES)) +
geom_point(aes(id = Description)) +
geom_vline(xintercept = 0.05, color = 'gray', linetype = 'dotted') +
geom_hline(yintercept = 0.05, color = 'gray', linetype = 'dotted') +
ggtitle(paste0('Enriched terms in common for Module ', top_modules[i])) +
scale_x_continuous(limits = c(min_val, max_val)) +
scale_y_continuous(limits = c(min_val, max_val)) +
xlab('Corrected p-value for GSEA') + ylab('Corrected p-value for ORA') +
scale_colour_viridis(direction = -1) + theme_minimal() + coord_fixed())
l[[i]] = ggp
}
}
return(l)
}
compare_methods(GSEA_KEGG, ORA_KEGG)
Enrichments for Module #FF64B1 (MTcor=0.5):
GSEA has 9 enriched terms
ORA has 0 enriched terms
0 terms are enriched in both methods
Enrichments for Module #A789FF (MTcor=0.61):
GSEA has 25 enriched terms
ORA has 0 enriched terms
0 terms are enriched in both methods
compare_methods(GSEA_Reactome, ORA_Reactome)
Enrichments for Module #FF64B1 (MTcor=0.5):
GSEA has 30 enriched terms
ORA has 1 enriched terms
0 terms are enriched in both methods
Enrichments for Module #A789FF (MTcor=0.61):
GSEA has 67 enriched terms
ORA has 0 enriched terms
0 terms are enriched in both methods
compare_methods(GSEA_GO, ORA_GO)
Enrichments for Module #FF64B1 (MTcor=0.5):
GSEA has 0 enriched terms
ORA has 1 enriched terms
0 terms are enriched in both methods
Enrichments for Module #A789FF (MTcor=0.61):
GSEA has 37 enriched terms
ORA has 3 enriched terms
0 terms are enriched in both methods
compare_methods(GSEA_DO, ORA_DO)
Enrichments for Module #FF64B1 (MTcor=0.5):
GSEA has 0 enriched terms
ORA has 0 enriched terms
0 terms are enriched in both methods
Enrichments for Module #A789FF (MTcor=0.61):
GSEA has 2 enriched terms
ORA has 0 enriched terms
0 terms are enriched in both methods
compare_methods(GSEA_DGN, ORA_DGN)
Enrichments for Module #FF64B1 (MTcor=0.5):
GSEA has 1 enriched terms
ORA has 0 enriched terms
0 terms are enriched in both methods
Enrichments for Module #A789FF (MTcor=0.61):
GSEA has 6 enriched terms
ORA has 0 enriched terms
0 terms are enriched in both methods
sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.4 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
##
## locale:
## [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
## [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
## [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats4 parallel stats graphics grDevices utils datasets
## [8] methods base
##
## other attached packages:
## [1] WGCNA_1.69 fastcluster_1.1.25 dynamicTreeCut_1.63-1
## [4] org.Hs.eg.db_3.8.2 AnnotationDbi_1.46.1 IRanges_2.18.3
## [7] S4Vectors_0.22.1 Biobase_2.44.0 BiocGenerics_0.30.0
## [10] DOSE_3.10.2 ReactomePA_1.28.0 clusterProfiler_3.12.0
## [13] biomaRt_2.40.5 kableExtra_1.1.0 knitr_1.28
## [16] doParallel_1.0.15 iterators_1.0.12 foreach_1.5.0
## [19] polycor_0.7-10 expss_0.10.2 ggpubr_0.2.5
## [22] magrittr_1.5 GGally_1.5.0 gridExtra_2.3
## [25] viridis_0.5.1 viridisLite_0.3.0 RColorBrewer_1.1-2
## [28] dendextend_1.13.4 plotly_4.9.2 glue_1.4.1
## [31] reshape2_1.4.4 forcats_0.5.0 stringr_1.4.0
## [34] dplyr_1.0.0 purrr_0.3.4 readr_1.3.1
## [37] tidyr_1.1.0 tibble_3.0.1 ggplot2_3.3.2
## [40] tidyverse_1.3.0
##
## loaded via a namespace (and not attached):
## [1] readxl_1.3.1 backports_1.1.8 Hmisc_4.4-0
## [4] fastmatch_1.1-0 plyr_1.8.6 igraph_1.2.5
## [7] lazyeval_0.2.2 splines_3.6.3 crosstalk_1.1.0.1
## [10] BiocParallel_1.18.1 urltools_1.7.3 digest_0.6.25
## [13] htmltools_0.4.0 GOSemSim_2.10.0 GO.db_3.8.2
## [16] fansi_0.4.1 checkmate_2.0.0 memoise_1.1.0
## [19] cluster_2.1.0 graphlayouts_0.7.0 modelr_0.1.6
## [22] matrixStats_0.56.0 enrichplot_1.4.0 prettyunits_1.1.1
## [25] jpeg_0.1-8.1 colorspace_1.4-1 rappdirs_0.3.1
## [28] blob_1.2.1 rvest_0.3.5 ggrepel_0.8.2
## [31] haven_2.2.0 xfun_0.12 crayon_1.3.4
## [34] RCurl_1.98-1.2 jsonlite_1.7.0 graph_1.62.0
## [37] impute_1.58.0 survival_3.1-12 polyclip_1.10-0
## [40] gtable_0.3.0 webshot_0.5.2 UpSetR_1.4.0
## [43] graphite_1.30.0 scales_1.1.1 DBI_1.1.0
## [46] Rcpp_1.0.4.6 progress_1.2.2 htmlTable_1.13.3
## [49] gridGraphics_0.5-0 reactome.db_1.68.0 foreign_0.8-76
## [52] bit_1.1-15.2 europepmc_0.4 preprocessCore_1.46.0
## [55] Formula_1.2-3 htmlwidgets_1.5.1 httr_1.4.1
## [58] fgsea_1.10.1 acepack_1.4.1 ellipsis_0.3.1
## [61] pkgconfig_2.0.3 reshape_0.8.8 XML_3.99-0.3
## [64] farver_2.0.3 nnet_7.3-14 dbplyr_1.4.2
## [67] labeling_0.3 ggplotify_0.0.5 tidyselect_1.1.0
## [70] rlang_0.4.6 munsell_0.5.0 cellranger_1.1.0
## [73] tools_3.6.3 cli_2.0.2 generics_0.0.2
## [76] RSQLite_2.2.0 ggridges_0.5.2 broom_0.5.5
## [79] evaluate_0.14 yaml_2.2.1 bit64_0.9-7
## [82] fs_1.4.0 tidygraph_1.2.0 ggraph_2.0.3
## [85] nlme_3.1-147 DO.db_2.9 xml2_1.2.5
## [88] compiler_3.6.3 rstudioapi_0.11 curl_4.3
## [91] png_0.1-7 ggsignif_0.6.0 reprex_0.3.0
## [94] tweenr_1.0.1 stringi_1.4.6 highr_0.8
## [97] lattice_0.20-41 Matrix_1.2-18 vctrs_0.3.1
## [100] pillar_1.4.4 lifecycle_0.2.0 BiocManager_1.30.10
## [103] triebeard_0.3.0 data.table_1.12.8 cowplot_1.0.0
## [106] bitops_1.0-6 qvalue_2.16.0 latticeExtra_0.6-29
## [109] R6_2.4.1 codetools_0.2-16 MASS_7.3-51.6
## [112] assertthat_0.2.1 withr_2.2.0 mgcv_1.8-31
## [115] hms_0.5.3 rpart_4.1-15 grid_3.6.3
## [118] rvcheck_0.1.8 rmarkdown_2.1 ggforce_0.3.1
## [121] base64enc_0.1-3 lubridate_1.7.4